package beinstellungen


import java.util.logging.Logger;
import src.de.checker.hochzeit.util.*;
import src.de.checker.hochzeit.domain.util.*;
import src.de.checker.hochzeit.domain.user.*;
import src.de.checker.hochzeit.domain.ideen.*;
import src.de.checker.hochzeit.konstanten.*
import com.google.appengine.api.datastore.*
import static com.google.appengine.api.datastore.FetchOptions.Builder.*

/**
 * Enthält Methoden für die Benachrichtigungseinstellungen.
 * Ist nur für Benutzer mit der Rolle Planer zugänglich.
 * (Siehe AuthFilter)
 */
Logger log = Logger.getLogger('B_EinstellungenController');

if(session.getAttribute(Konstanten.SESSION_USER) != null)
{
	def user = session.getAttribute(Konstanten.SESSION_USER)

	if(params?.index ==~ /(?i)true/)
	{
		index()
	}
	if(params?.updateben ==~ /(?i)true/)
	{
		updatebenachrichtigung()
	}
}
/**
 * Aktualisiert die Benachrichtigungseinstellungen für den angemeldeten Benutzer.
 * Ist nur für die Benachrichtigungseinstellung für die Rolle Planer gedacht.
 */
private void updatebenachrichtigung()
{
	def myuser = session.getAttribute(Konstanten.SESSION_USER)
	Key userkey = myuser.key 
	def query = new Query(Konstanten.BENACHRICHTIGUNG)
	query.addFilter("gast", Query.FilterOperator.EQUAL, userkey)
	PreparedQuery preparedQuery = datastore.prepare(query)
	try
	{
		Entity i = preparedQuery.asSingleEntity()
		//def entities = preparedQuery.asList( withLimit(6) )
		if(i == null)
		{
			log.warning('Keine Benachrichtigungs-Einträge für Gast '+myuser)
			redirect '/peinstellungen'
		}
		else
		{
			boolean changed = false
			//Checkbox überprüfen
			if(params['check_6'])
			{
				if(!i.wert)
				{
					i.wert = true
					changed = true
				}
			}
			else
			{
				if(i.wert)
				{
					i.wert = false
					changed = true
				}
			}
			//Tage überprüfen
			if(params['checktage'])
			{
				try
				{
					Long neuetage = new Long(params['checktage'])
					if(!(neuetage == i.tage))
					{
						i.tage = neuetage
						changed = true
					}
				}
				catch(Exception e){}
			}
			if(changed)
			{
				i.save()
				request.message = 'Benachrichtigungen erfolgreich aktualisiert '
			}
					
			request['item'] = i
			forward '/beinstellungen/benachrichtigung.gtpl'
		}
	}
	catch(Exception e)
	{
		log.warning(e.toString())
		log.warning("Probleme beim Laden der Benachrichtigungen für Benutzer "+myuser+". Bitte Benachrichtigungsobjekte prüfen. Es sollte nur eins geben!")
		redirect '/peinstellungen'
	}
	
	
}
/**
 * Zeigt die Benachrichtigungseinstellungen für den angemeldeten Benutzer an.
 * Ist nur für Benutzer mit der Rolle Planer gedacht
 */
private void index()
{
	def myuser = session.getAttribute(Konstanten.SESSION_USER)
	Key userkey = myuser.key 
	def query = new Query(Konstanten.BENACHRICHTIGUNG)
	query.addFilter("gast", Query.FilterOperator.EQUAL, userkey)
	PreparedQuery preparedQuery = datastore.prepare(query)
	try
	{
		Entity ben = preparedQuery.asSingleEntity()
		//def entities = preparedQuery.asList( withLimit(6) )
		if(ben == null)
		{
			log.warning('Keine Benachrichtigungs-Einträge für Gast '+myuser)
			redirect '/peinstellungen'
		}
		else
		{
			request['item'] = ben
			forward '/beinstellungen/benachrichtigung.gtpl'
		}
	}
	catch(Exception e)
	{
		log.warning(e.toString())
		log.warning("Probleme beim Laden der Benachrichtigungen für Benutzer "+myuser+". Bitte Benachrichtigungsobjekte prüfen. Es sollte nur eins geben!")
		redirect '/peinstellungen'
	}
}